package com.swa99ylum.pjv.validator;

import java.util.List;
import java.util.Map;

import com.swa99ylum.pjv.exception.JSONValidateException;

/** <h1>容器 容量 验证器</h1>
<br> 1、验证 value 只能是 List、Map，而 不能是 单值
<br> 2、将 value 转成 容器类型，并 验证其 容量
<br>    
 */
public class SizeValidator extends Validator {
	
	
	private int size;

	public SizeValidator(int size) {
		super();
		this.size = size;
	}
	
	@SuppressWarnings("unchecked")
	@Override
	public void doValidate(Object rootObject, String[] nodePath, String nodeName, Map<String, Object> parentValue, Object value) throws JSONValidateException {
		
		if(value instanceof List) {
			List<Object> list = (List<Object>) value;
			if(list.size() > size)
				throw new JSONValidateException(nodePath, value, "Array 的容量 过长，超过了："+ size);
		}
		
		if(value instanceof Map) {
			Map<String, Object> map = (Map<String, Object>) value;
			if(map.size() > size)
				throw new JSONValidateException(nodePath, value, "Object 的容量 过长，超过了："+ size);
		}
		
		throw new JSONValidateException(nodePath, value, "应当是 Array 或 Object，不能是 单值");
		
	}


}
